package com.superyee.commonlib.utils;

import android.util.Log;

import com.superyee.commonlib.constants.AppConfig;


/**
 * 项目描述：日志管理
 */
public class AppLog {

    private static boolean mOpen = AppConfig.DEBUG; // 日志开关
    private static final String LEVEL_D = "D";
    private static final String LEVEL_E = "E";
    private static final String LEVEL_I = "I";
    private static final String LEVEL_V = "V";
    private static final String LEVEL_W = "W";

    public static final String TAG = AppLog.class.getSimpleName();

    public AppLog() {
        super();
    }

    public void setDebug(boolean isOpen) {
        mOpen = isOpen;
    }

    public boolean getDebug() {
        return mOpen;
    }

    /**
     * 输出debug级别的日志
     *
     * @param tag TAG标记
     * @param msg 日志内容
     */
    public static void printD(String tag, String msg) {
        if (!mOpen) {
            return;
        }
        if (msg == null) {
            msg = "无日志信息";
        }
        Log.d(tag, msg);
        writeToFile(LEVEL_D, tag, msg, null);
    }

    /**
     * 输出error级别的日志
     *
     * @param tag TAG标记
     * @param msg 日志内容
     */
    public static void printE(String tag, String msg) {
        if (!mOpen) {
            return;
        }
        if (msg == null) {
            msg = "无日志信息";
        }
        Log.e(tag, msg);
        writeToFile(LEVEL_E, tag, msg, null);
    }

    /**
     * 输出info级别的日志
     *
     * @param tag TAG标记
     * @param msg 日志内容
     */
    public static void printI(String tag, String msg) {
        if (!mOpen) {
            return;
        }
        if (msg == null) {
            msg = "无日志信息";
        }
        Log.i(tag, msg);
        writeToFile(LEVEL_I, tag, msg, null);
    }

    /**
     * 输出VERBOSE级别的日志
     *
     * @param tag TAG标记
     * @param msg 日志内容
     */
    public static void printV(String tag, String msg) {
        if (!mOpen) {
            return;
        }
        if (msg == null) {
            msg = "无日志信息";
        }
        Log.v(tag, msg);
        writeToFile(LEVEL_V, tag, msg, null);
    }

    /**
     * 输出WARN级别的日志
     *
     * @param tag TAG标记
     * @param msg 日志内容
     */
    public static void printW(String tag, String msg) {
        if (!mOpen) {
            return;
        }
        if (msg == null) {
            msg = "无日志信息";
        }
        Log.w(tag, msg);
        writeToFile(LEVEL_W, tag, msg, null);
    }

    /**
     * 将日志信息写到文件里面
     *
     * @param levelD 日志级别
     * @param tag    日志标记
     * @param msg    日志内容
     * @param object 保留字段
     */
    private static void writeToFile(final String levelD, final String tag, final String msg, Object object) {
//        ExecutorUtils.getInstance().execute(new Runnable() {
//            public void run() {
//                String time = TimeUtil.getCurrentTime(TimeUtil.TIME_FORMAT_FOUR);
//                StringBuffer sb = new StringBuffer();
//                sb.append("level=").append(levelD).append("\ttime=").append(time).append("\tclassname=").append(tag)
//                        .append("\tMessage=").append(msg);
//                sb.append(System.getProperties().getProperty("line.separator"));
//                File logfileDir = Environment.getExternalStoragePublicDirectory(AppConfig.DIR_ROOT);
//                File file = new File(logfileDir, "log-" + TimeUtil.getCurrentTime(TimeUtil.TIME_FORMAT_13)
//                        + AppConfig.FILE_NAME_EXTENSION_LOG);
//                FileHelper.writeStringToFile(file, sb.toString());
//            }
//        });
    }
}
